import preferences from '@ohos.data.preferences'
/**
 * 数据库工具类
 */
class PreferencesUtil {
  //全局变量
  preference: preferences.Preferences
  //异步函数
  async loadPreference(context, name: string) {
    // preferences.getPreferences(context, name,
    //   (err, Preferences) => {
    //     if (err) {
    //       console.error(`Failed to get preferences. Code:${err.code},message:${err.message}`);
    //       return;
    //     }
    //     this.preference = PreferencesQ
    //   })
    this.preference = await preferences.getPreferences(context, name)


  }

  initPerference(context){

       // preferences.getPreferences(context,' abc',
       //   //异步的，等到初始化完成才执行
       //   (Preferences)=>{
       //     this.preference = Preferences
       //   }
       // )
    //有返回值：但返回值是promise:未来时，
    preferences.getPreferences(context,'abc')
      .then((Preferences)=>{
      this.preference = Preferences
    })

  }

  // test(){
  //  this.initPerference()
  //   //有可能出现还没初始化完成，就已经去put了，报错
  //   preferences.put('a','on')
  // }


  //写数据
  async putValue(key: string, value: preferences.ValueType) {
    // 可判定是否包含
    // if(this.preference.has(key)){
    //
    // }
    try {
      // await this.preference.put(key, value, (err) => {
      //   if (err) {
      //     console.error(`Failed to put data. Code:${err.code}, message:${err.message}`);
      //     return;
      //   }
      //   console.info('Succeeded in putting data.');
      //   //刷新
      //   // this.preference.flush()
      // })
      await this.preference.put(key, value)
      await this.preference.flush()
    } catch (err) {
      console.error(`Failed to check the key 'startup'. Code:${err.code}, message:${err.message}`);
    }

  }

  //读数据： 返回值：  string对应的值，返回
  async getValue(key: string, defaultValue: preferences.ValueType) {
    try {
      // this.preference.get(key, defaultValue).then(( value)=>{
      //    return value
      // })
      //强制等待： 同步的
      let value = await this.preference.get(key, defaultValue)
      return value
    } catch (e) {
      console.log('testTag', `读取Preferences[${key}.${key} ]失败`, JSON.stringify(e))
    }
  }
}

let preferencesUtil: PreferencesUtil = new PreferencesUtil()
//导出
export default preferencesUtil

